
import com.mysql.jdbc.Statement;
import java.sql.ResultSet;
import java.util.Vector;


public class PacienteDAO extends Base{
    
    //<editor-fold defaultstate="collapsed" desc="Construtor">
    public PacienteDAO(){
        
    }
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc="Métodos">
    /*
    * Método que monta a query e chama o buscarProximoID na classe Base.
    * e retorna pra classe ClinicaController o id ja incrementado, ClinicaController
    * só retorna para o frm_clinicas.
    */
    public int buscar_ProximoID(String id_tabela){
        conectarBanco();
        String sql;
        sql = "SELECT MAX("+id_tabela+") FROM tb_paciente;";
        System.out.println(sql);
        return buscarProximoID(sql,id_tabela);
    }
    /*
     * Método para busca do id através do nome
     * de uma clinica passada por parametro.
     */
    public int buscarID_Dentista(String nome_dentista){
        conectarBanco();
        String sql;
        sql = "SELECT id_dentista FROM tb_dentista WHERE nome = '"+nome_dentista+"';";
        return buscarID(sql,"id_dentista");
    }
    
    /*
   * Método que monta a query para cadastro de clinicas
   */
    public boolean cadastrarPaciente(Paciente paciente) {
        conectarBanco();
        String sql;
        
        sql = "INSERT INTO tb_paciente (id_dentista,nome,rg,cpf,email,telefone,celular,endereco"
                + ",numero, apto, uf, cidade,bairro) values('"+paciente.getID_Dentista()+"','"+paciente.getNome()+"','"+paciente.getRg()+"','"+paciente.getCpf()+"','"+paciente.getEmail()+"','"+paciente.getTelefone()+"',"
                + "'"+paciente.getCelular()+"','"+paciente.getEndereco()+"','"+paciente.getNumero()+"','"+paciente.getApto()+"','"+paciente.getUf()+"','"+paciente.getCidade()+"','"+paciente.getBairro()+"');";
        
        return cadastrar(sql);
    }
    /*
     * Método que monta a query para cada tipo de pesquisa
     * de dentistas apartir do tipo de pesquisa e valor a serem pesquisados.    
     */
   /* public Vector<Dentista> buscarDentistas(String filtrar_por,String pesquisar){
        Vector<Dentista> vector = new Vector<Dentista>();
        String sql;
        if(filtrar_por.equals("Código")){
            sql = "SELECT * FROM tb_dentista WHERE id_dentista = '"+pesquisar+"';";
        }
        else if(filtrar_por.equals("Nome")){
            sql = "SELECT * FROM tb_dentista WHERE nome LIKE '%"+pesquisar+"%';";
        }
        else{
            sql = "SELECT * FROM tb_dentista;";
        }
        conectarBanco();
        vector = buscarDentistas(sql);
        return vector;
    } */
    /*
     * Método que monta a query para cada tipo de pesquisa
     * de dentistas apartir do tipo de pesquisa e valor a serem pesquisados.    
     */
    public Vector<Paciente> buscarPacientes(String filtrar_por,String pesquisar){
        Vector<Paciente> vector = new Vector<Paciente>();
        Vector<Paciente> list = new Vector<Paciente>();
        String sql;
        try{
            conectarBanco();
            if(filtrar_por.equals("Código")){
                sql = "SELECT * FROM tb_paciente WHERE id_paciente = '"+pesquisar+"';";
            }
            else if(filtrar_por.equals("Nome")){
                sql = "SELECT * FROM tb_paciente WHERE nome LIKE '%"+pesquisar+"%';";
            }
            else{
                sql = "SELECT * FROM tb_paciente;";
            }

            Statement st = (Statement) c.createStatement();
            ResultSet rs = st.executeQuery(sql);

            if (rs != null) {
                while (rs.next()) {
                    Paciente paciente = new Paciente();
                    paciente.setID_Paciente(rs.getInt("id_paciente"));
                    paciente.setID_Dentista(rs.getInt("id_dentista"));
                    paciente.setNome(rs.getString("nome"));
                    paciente.setNomeDentista(buscarNomeDentista(paciente.getID_Dentista()));
                    paciente.setRg(rs.getString("rg"));
                    paciente.setCpf(rs.getString("cpf"));
                    paciente.setEmail(rs.getString("email"));
                    paciente.setTelefone(rs.getString("telefone"));
                    paciente.setCelular(rs.getString("celular"));
                    paciente.setEndereco(rs.getString("endereco"));
                    paciente.setNumero(rs.getString("numero"));
                    paciente.setApto(rs.getString("apto"));
                    paciente.setUf(rs.getString("uf"));
                    paciente.setCidade(rs.getString("cidade"));
                    paciente.setBairro(rs.getString("bairro"));

                    list.add(paciente);
                }
                return list;
            }
        } catch (Exception e) {
            System.out.println(e);
        }
        return null;
    } 

    
    /*
     * Método para editarDentista em seus campos.
     */
    public Vector<Paciente> editarPaciente(Paciente paciente){
        Vector<Paciente> vector = new Vector<Paciente>();
        Vector<Paciente> list = new Vector<Paciente>();
        String sql;
        try{
            conectarBanco();
            sql = "SELECT * FROM tb_paciente WHERE id_paciente = "+paciente.getID_Paciente()+";";
            Statement st = (Statement) c.createStatement();
            ResultSet rs = st.executeQuery(sql);

            if (rs != null) {
                while (rs.next()) {
                    paciente.setID_Paciente(rs.getInt("id_paciente"));
                    paciente.setID_Dentista(rs.getInt("id_dentista"));
                    paciente.setNome(rs.getString("nome"));
                    paciente.setNomeDentista(buscarNomeDentista(paciente.getID_Dentista()));
                    paciente.setRg(rs.getString("rg"));
                    paciente.setCpf(rs.getString("cpf"));
                    paciente.setEmail(rs.getString("email"));
                    paciente.setTelefone(rs.getString("telefone"));
                    paciente.setCelular(rs.getString("celular"));
                    paciente.setEndereco(rs.getString("endereco"));
                    paciente.setNumero(rs.getString("numero"));
                    paciente.setApto(rs.getString("apto"));
                    paciente.setUf(rs.getString("uf"));
                    paciente.setCidade(rs.getString("cidade"));
                    paciente.setBairro(rs.getString("bairro"));

                    list.add(paciente);
                }
                return list;
            }
        } catch (Exception e) {
            System.out.println(e);
        }
        return null;
        
    }
    /*
     * Método para busca o id de um registro na tabela
     * passando a linha por parametro.
     */
    public int buscarID_Tabelas(int linha,int coluna){
        conectarBanco();
        String id = frm_pacientes.jt_pacientes.getValueAt(linha, coluna)+"";
        return Integer.parseInt(id);
    } 
    /*
     * Método que recebe o objeto clinica e monta a query para 
     * alteração dos campos.
     */
    public boolean alterarPaciente(Paciente paciente){
        conectarBanco();
        String sql;
        sql = "UPDATE tb_paciente SET id_dentista = '"+paciente.getID_Dentista()+"',nome='"+paciente.getNome()+"', rg = '"+paciente.getRg()+"', cpf='"+paciente.getCpf()+"', email='"+paciente.getEmail()+"', telefone='"+paciente.getTelefone()+"', celular='"+paciente.getCelular()+"',"
                    + "endereco='"+paciente.getEndereco()+"',numero='"+paciente.getNumero()+"',apto='"+paciente.getApto()+"',uf='"+paciente.getUf()+"',cidade='"+paciente.getCidade()+"',bairro='"+paciente.getBairro()+"'WHERE id_paciente = "+paciente.getID_Paciente()+";";
        
        try {
            Statement st = (Statement) c.createStatement();
            st.executeUpdate(sql);
        } catch (Exception e) {
            System.out.println(e);
            return false;
        }
        return true;
    }
    
        /*
     * Método que monta a query para listar pacientes em um combobox.
     */
    public void listarPacientesCombo(){
        conectarBanco();
        try {
            String sql;
            sql = "SELECT nome FROM tb_paciente;";
            Statement st = (Statement) c.createStatement();
            ResultSet rs = st.executeQuery(sql);
            while (rs.next()) {
                frm_ordem_de_servico.cb_paciente.addItem(rs.getString("nome"));
            }
        } catch (Exception e) {
        }
    }
    
    
    public String buscarNomeDentista(int id_dentista){
        String sql;
        sql= "select nome from tb_dentista where id_dentista = " + id_dentista + ";";
        return buscarNome(sql);
    }
    
    
     //</editor-fold>
}
